在學會怎麼撰寫 Wasm 應用程式與如何做出 Wasm Container Image 之後,我們的下一步就是來看看當 docker run --rm wasm-container-image
的時候,到底發生了什麼事。
當 docker run --rm -it A
被呼叫之後,會是以下的流程:
docker -> containerd -> containerd-shim -> runc -> 設定 A 的 container
當然,由於過程的每個階段都有對應的標準,你隨時可以把 runc
換成 crun
或者其他不同的 OCI Runtime 都是一樣的流程。
正如我們之前所言,Wasm Container 是來輔助傳統的 Container 的,在這個前提下,會以不破壞流程為主。
然而以上面的派生流程來說,動到哪個環節是影響最小的呢?
runc
的位置,相比 1&2 是可以接受的方案。crun
並弄了一個與 crun
相容的工具,叫做 crunw = crun+runwasm
,我們後續會在其他的工具鏈裡(podman+crun+wasmedge handler)看到,不過在 docker desktop 中,是選擇 3 的解決方案。根據上面的結論,現在的流程就會變成是以下的樣子:
docker -> containerd -> containerd-shim -> runc -> 設定 A 的 container
|--> runwasi -> 設定不同的 Wasm runtime
至於這個 runwasi 的細節,就讓我們明天再繼續展開吧!